package LeetCode.BitCompute;
//位运算9 判断一个数的位级表示是否不会出现连续的 0 和 1
public class Test9 {
    //https://www.cnblogs.com/vsign/p/7290594.html
    //String result = Integer.toBinaryString(n);
    public static boolean hasAlternatingBits(int n) {

//        一、String转为int
//        int i=Integer.parseInt（string）；
//        int i=Integer.valueOf(s).intValue();
//        二、int转为String
//        String s = String.valueOf(i);
//        String s = Integer.toString(i);
//        String s = "" + i;
//        原文链接：https://blog.csdn.net/small_emotion/article/details/83903829

        //法一：转字符串使用contain函数
//        String result = Integer.toBinaryString(n);
//        return !(result.contains("00")||result.contains("11"));

        //法二：位运算
        //对于 1010 这种位级表示的数，把它向右移动 1 位得到 101，
        // 这两个数每个位都不同，因此异或得到的结果为 1111。判断全一：全一的二进制数与上本身加以为0。
        int a = (n ^ (n >> 1));
        return (a & (a + 1)) == 0;
    }

    public static void main(String[] args) {

    }
}
